return {
    {
        -- 加快 j、k 执行速度
        "rhysd/accelerated-jk",
        event = "BufReadPre",
        keys = {
            { "j", "<Plug>(accelerated_jk_gj)" },
            { "k", "<Plug>(accelerated_jk_gk)" },
        },
    },
    {
        -- 可以快速打开之前编辑的文件
        "folke/persistence.nvim",
        event = "BufReadPre",
        keys = {
            { "<leader>qs", [[<cmd>lua require("persistence").load()<cr>]], desc = "在当前目录中重新打开会话" },
            { "<leader>ql", [[<cmd>lua require("persistence").load({ last = true})<cr>]], desc = "打开最后一次会话" },
            { "<leader>qd", [[<cmd>lua require("persistence").stop()<cr>]], desc = "退出时会话将不会被保存" },
        },
        config = true,
    },
    {
        -- 当输入(、[、{、‘、” 时, 自动为其添加配对字符。
        "windwp/nvim-autopairs",
        event = "VeryLazy",
        opts = {
            enable_check_bracket_line = false,
        },
    },
    {
        -- 重新打开文件时跳转至关闭时所在行，而非文件首行。
        "ethanholz/nvim-lastplace",
        event = "BufReadPre",
        config = true,
    },
    {
        -- 快速搜索及跳转
        "folke/flash.nvim",
        event = "BufReadPre",
        keys = {
            {
                "s",
                mode = { "n", "x", "o" },
                function()
                    require("flash").jump()
                end,
                desc = "Flash",
            },
            {
                "S",
                mode = { "n", "o", "x" },
                function()
                    require("flash").treesitter()
                end,
                desc = "Flash Treesitter",
            },
            {
                "r",
                mode = "o",
                function()
                    require("flash").remote()
                end,
                desc = "Remote Flash",
            },
            {
                "R",
                mode = { "o", "x" },
                function()
                    require("flash").treesitter_search()
                end,
                desc = "Flash Treesitter Search",
            },
            {
                "<c-s>",
                mode = { "c" },
                function()
                    require("flash").toggle()
                end,
                desc = "Toggle Flash Search",
            },
        },
        config = true
    },
    {
        -- 驼峰命名的拼写检查
        "kamykn/spelunker.vim",
        event = "VeryLazy",
        config = false,
        -- config = function()
        --     vim.g.spelunker_check_type = 2
        -- end
    },
    {
        -- 简单的markdown预览插件
        "ellisonleao/glow.nvim",
        event = "VeryLazy",
        config = false,
    },
    {
        -- markdown实时预览
        "iamcco/markdown-preview.nvim",
        tag = 'v0.0.10',
        cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
        ft = { "markdown" },
        build = function() vim.fn["mkdp#util#install"]() end,
    },
    {
        -- 用于快速编写markdown表格
        "dhruvasagar/vim-table-mode",
        event = "VeryLazy",
        tag = 'v4.8.1'
    },
    {
        -- 目录树
        "nvim-neo-tree/neo-tree.nvim",
        dependencies = {
            "nvim-lua/plenary.nvim",
            "nvim-tree/nvim-web-devicons", -- not strictly required, but recommended
            "MunifTanjim/nui.nvim",
        },
        keys = {
            { "<leader>e", "<cmd>Neotree toggle<CR>", desc = "Open the neo-tree", mode = { "n", "v" } },
            { "<leader>nr", "<cmd>Neotree source=filesystem reveal=true position=left<CR>", desc = "在左侧浏览器中显示当前文件", mode = { "n", "v" } },
        },
        opts = {
            window = {
                mappings = {
                    ["Z"] = "expand_all_nodes",
                    ["P"] = "toggle_preview",
                }
            },
            filesystem = {
                follow_current_file = {
                    enabled = true,          -- This will find and focus the file in the active buffer every time
                    --               -- the current file is changed while the tree is open.
                    leave_dirs_open = false, -- `false` closes auto expanded dirs, such as with `:Neotree reveal`
                },
            }

        },
        config = true,
    },
    {
        -- 提示组合键位
        "folke/which-key.nvim",
        event = "VeryLazy",
        config = true,
    },
    {
        -- mini 系列
        -- https://github.com/echasnovski/mini.nvim
        -- 扩展内建的文本对象
        'echasnovski/mini.ai',
        event = "VeryLazy",
        config = true,
    },
    {
        -- 自动识别脚本语言注释与反注释
        "echasnovski/mini.comment",
        event = "VeryLazy",
        config = true,
    },
    {
        -- 书签管理
        "kshenoy/vim-signature",
        event = "VeryLazy",
    },
    {
        -- 拆分窗口管理器
        "s1n7ax/nvim-window-picker",
        event = "VeryLazy",
        opts = {
            filter_rules = {
                include_current_win = true,
                bo = {
                    filetype = { "fidget", "neo-tree" }
                }
            }
        },
        keys = {
            {
                "<c-w>p",
                function()
                    local window_number = require('window-picker').pick_window()
                    if window_number then vim.api.nvim_set_current_win(window_number) end
                end,
            }
        }
    },
}
